<?php

class ImportAction extends fvAction {
    
    function __construct () {
        parent::__construct(fvSite::$Layoult);
    }
    
    function executeIndex() {
        if (!fvRequest::getInstance()->isXmlHttpRequest()) {
            return self::$FV_OK;
        } else {
            return self::$FV_AJAX_CALL;
        }   
    }
    
    function executeGettabcontent() {
        if (fvRequest::getInstance()->isXmlHttpRequest())
            return self::$FV_AJAX_CALL;
        else $this->redirect404();
        
    }
    
    function executeSaveobject() {
        $objId = fvRequest::getInstance()->getRequestParameter('objId');
        
        $ImportedObject = ImportedObjectManager::getInstance()->getByPk($objId);
        
        if (!$ImportedObject) {
            $this->setFlash("Ошибка при операции с записью", self::$FLASH_ERROR);
            return self::$FV_AJAX_CALL;
        }
        
        $object_id = $ImportedObject['object_id'];
        $object_name = $ImportedObject['object_name'];
        
        $manager = call_user_func(array("{$object_name}Manager", "getInstance"));
        $object = $manager->getByParentId($object_id);
        
        if (count($object) == 1) {
            $object = $object[0];
        } elseif (count($object) == 0) {
            $object = new $object_name();
        } else {
            $this->setFlash("Нет возможности получить импортируемый объект. Проверте или повторите попытку позднее", self::$FLASH_ERROR);
            return self::$FV_AJAX_CALL;
        }
        
        if (method_exists($object, 'importData')) {
            $object->importData($ImportedObject);
        } else {
            $object->updateFromRequest(unserialize($ImportedObject['object_hash']));
            $object->parent_id = $object_id;
        }
        
        if ($object->save()) {
            $ImportedObject->delete();
            $this->setFlash('Запись успешно сохранена в базе', self::$FLASH_SUCCESS);    
        } else {
            $this->setFlash('Произошла ошибка, попробуйте позднее', self::$FLASH_ERROR);
        }
       
        return self::$FV_AJAX_CALL;
    }
    
    function executeDeleteobject() {
        $this->setFlash('test', self::$FLASH_ERROR);
        
                $objId = fvRequest::getInstance()->getRequestParameter('objId');
        
        $ImportedObject = ImportedObjectManager::getInstance()->getByPk($objId);
        
        if (!$ImportedObject) {
            $this->setFlash("Ошибка при операции с записью", self::$FLASH_ERROR);
            return self::$FV_AJAX_CALL;
        }
        
        if ($ImportedObject->delete()) {
            $this->setFlash('Запись успешно удалена', self::$FLASH_SUCCESS);    
        } else {
            $this->setFlash('Произошла ошибка, попробуйте позднее', self::$FLASH_ERROR);
        }
        
        return self::$FV_AJAX_CALL;
    }
}

?>
